<html>
 <head>
  <link href="./leetcode-problem.css" rel="stylesheet" type="text/css">
 </head>
 <body>
  <div class="question_difficulty">
   难度：Hard
  </div>
  <div>
   <h1 class="question_title">
    794. Swim in Rising Water
   </h1>
   <p>
    On an N x N
    <code>
     grid
    </code>
    , each square
    <code>
     grid[i][j]
    </code>
    represents the elevation at that point
    <code>
     (i,j)
    </code>
    .
   </p>
   <p>
    Now rain starts to fall. At time
    <code>
     t
    </code>
    , the depth of the water everywhere is
    <code>
     t
    </code>
    . You can swim from a square to another 4-directionally adjacent square if and only if the elevation of both squares individually are&nbsp;at most&nbsp;
    <code>
     t
    </code>
    . You can swim infinite distance in zero time. Of course, you must stay within the boundaries of the grid during your swim.
   </p>
   <p>
    You start at the top left square
    <code>
     (0, 0)
    </code>
    . What is the least time until you can reach the bottom right square
    <code>
     (N-1, N-1)
    </code>
    ?
   </p>
   <p>
    <strong>
     Example 1:
    </strong>
   </p>
   <pre>
<strong>Input:</strong> [[0,2],[1,3]]
<strong>Output:</strong> 3
<strong>Explanation:</strong>
At time <code>0</code>, you are in grid location <code>(0, 0)</code>.
You cannot go anywhere else because 4-directionally adjacent neighbors have a higher elevation than t = 0.

You cannot reach point <code>(1, 1)</code> until time <code>3</code>.
When the depth of water is <code>3</code>, we can swim anywhere inside the grid.
</pre>
   <p>
    <strong>
     Example 2:
    </strong>
   </p>
   <pre>
<strong>Input:</strong> [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]]
<strong>Output:</strong> 16
<strong>Explanation:</strong>
<strong> 0  1  2  3  4</strong>
24 23 22 21  <strong>5</strong>
<strong>12 13 14 15 16</strong>
<strong>11</strong> 17 18 19 20
<strong>10  9  8  7  6</strong>

The final route is marked in bold.
We need to wait until time 16 so that (0, 0) and (4, 4) are connected.
</pre>
   <p>
    <strong>
     Note:
    </strong>
   </p>
   <ol>
    <li>
     <code>
      2 &lt;= N &lt;= 50
     </code>
     .
    </li>
    <li>
     grid[i][j] is a permutation of [0, ..., N*N - 1].
    </li>
   </ol>
  </div>
  <div>
   <h1 class="question_title">
    794. 水位上升的泳池中游泳
   </h1>
   <p>
    在一个 N x N 的坐标方格&nbsp;
    <code>
     grid
    </code>
    中，每一个方格的值
    <code>
     grid[i][j]
    </code>
    表示在位置
    <code>
     (i,j)
    </code>
    的平台高度。
   </p>
   <p>
    现在开始下雨了。当时间为&nbsp;
    <code>
     t
    </code>
    &nbsp;时，此时雨水导致水池中任意位置的水位为&nbsp;
    <code>
     t
    </code>
    &nbsp;。你可以从一个平台游向四周相邻的任意一个平台，但是前提是此时水位必须同时淹没这两个平台。假定你可以瞬间移动无限距离，也就是默认在方格内部游动是不耗时的。当然，在你游泳的时候你必须待在坐标方格里面。
   </p>
   <p>
    你从坐标方格的左上平台 (0，0) 出发。最少耗时多久你才能到达坐标方格的右下平台&nbsp;
    <code>
     (N-1, N-1)
    </code>
    ？
   </p>
   <p>
    <strong>
     示例 1:
    </strong>
   </p>
   <pre>
<strong>输入:</strong> [[0,2],[1,3]]
<strong>输出:</strong> 3
<strong>解释:</strong>
时间为0时，你位于坐标方格的位置为 <code>(0, 0)。</code>
此时你不能游向任意方向，因为四个相邻方向平台的高度都大于当前时间为 0 时的水位。

等时间到达 3 时，你才可以游向平台 (1, 1). 因为此时的水位是 3，坐标方格中的平台没有比水位 3 更高的，所以你可以游向坐标方格中的任意位置
</pre>
   <p>
    <strong>
     示例2:
    </strong>
   </p>
   <pre>
<strong>输入:</strong> [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]]
<strong>输入:</strong> 16
<strong>解释:</strong>
<strong> 0  1  2  3  4</strong>
24 23 22 21  <strong>5</strong>
<strong>12 13 14 15 16</strong>
<strong>11</strong> 17 18 19 20
<strong>10  9  8  7  6</strong>

最终的路线用加粗进行了标记。
我们必须等到时间为 16，此时才能保证平台 (0, 0) 和 (4, 4) 是连通的
</pre>
   <p>
    <strong>
     提示:
    </strong>
   </p>
   <ol>
    <li>
     <code>
      2 &lt;= N &lt;= 50
     </code>
     .
    </li>
    <li>
     grid[i][j] 位于区间 [0, ..., N*N - 1] 内。
    </li>
   </ol>
  </div>
 </body>
</html>